﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Osiptel.HECO.BE;
using Osiptel.HECO.DL;

namespace Osiptel.HECO.BL
{
    public class ComponenteBL : BaseBL
    {
        private ComponenteDL componenteDL = new ComponenteDL();

        public List<ComponenteBE> ObtenerComponentes(int idTipo, int idSubTipo, int idClase)
        {
            return componenteDL.ObtenerComponentes(idTipo, idSubTipo, idClase);
        }

        public int insertar(ComponenteBE componente, ComponenteTipoBE tipo, ComponenteSubtipoBE subTipo)
        {
            int resultado = 0;
            ComponenteDL oComponenteDL = new ComponenteDL();
            ComponentePrecioBL oCompPrecioBL = new ComponentePrecioBL();
            try
            {
                int idComp = oComponenteDL.mInsertar(componente);
                if(idComp > 0){
                    tipo.IdComponente = idComp;
                    subTipo.IdComponente = idComp;
                    oComponenteDL.mInsertarTipo(tipo);
                    if (subTipo.P06SubTipo > 0)
                    {
                        oComponenteDL.mInsertarSubTipo(subTipo);
                    }
                }
                resultado = idComp;
                
                return resultado;
            }
            catch (Exception lexcError)
            {
                throw new Exception(lexcError.Message);
            }
            finally
            {
                oComponenteDL = null;
            }
        }
        
        public ComponenteBE Obtener(int idComponente)
        {
            return componenteDL.Obtener(idComponente);
        }
        public List<ComponenteBE> FListarComponentes(int pagina, int regxpagina)
        {
            return componenteDL.FListarComponentes(pagina, regxpagina);
        }

        public List<ComponenteBE> ObtenerCompRadioEnlace()
        {
            return componenteDL.ObtenerCompRadioEnlace();
        }

        public List<ComponenteBE> ObtenerTodosComponentes()
        {
            return componenteDL.ObtenerTodosComponentes();
        }

        public List<ComponenteBE> ObtenerComponentesPorIds(List<int> ids)
        {
            List<ComponenteBE> resultado = new List<ComponenteBE>();
            for (int i = 0; i < ids.Count; i++)
            {
                ComponenteBE rpta = Obtener(ids[i]);
                rpta.Orden = i;
                resultado.Add(rpta);
            }
            return resultado;
        }

        public List<ComponenteBE> ObtenerComponentesPorIds1(List<ParamPredeterminado> ids)
        {
            List<ComponenteBE> resultado = new List<ComponenteBE>();
            for (int i = 0; i < ids.Count; i++)
            {
                ComponenteBE rpta = Obtener(ids[i].Id);
                rpta.Orden = i;
                resultado.Add(rpta);
            }
            return resultado;
        }
    }
}
